/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 17655
 * Date: 2025-05-23
 * Time: 20:19
 */

import java.util.regex.Pattern;

public class IPValidator {
    // IPv4 地址正则表达式（严格校验）
    private static final Pattern VALID_IP_PATTERN = Pattern.compile(
            "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}" +
                    "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
    );

    /**
     * 判断是否为有效 IPv4 地址
     * @param ip 待校验的字符串
     * @return 有效返回 true，否则 false
     */
    public static boolean isValidIP(String ip) {
        return VALID_IP_PATTERN.matcher(ip).matches();
    }

    public static void main(String[] args) {
        // 有效案例
        System.out.println("192.168.1.1：" + isValidIP("192.168.1.1"));    // true
        System.out.println("0.0.0.0：" + isValidIP("0.0.0.0"));          // true
        System.out.println("255.255.255.255：" + isValidIP("255.255.255.255")); // true

        // 无效案例
        System.out.println("256.1.1.1：" + isValidIP("256.1.1.1"));      // false（数值超界）
        System.out.println("192.168.1：" + isValidIP("192.168.1"));        // false（段数不足）
        System.out.println("192.168.01.1：" + isValidIP("192.168.01.1"));  // false（前导零）
        System.out.println("1.2.3.4.5：" + isValidIP("1.2.3.4.5"));      // false（段数过多）
        System.out.println("abc.123.45.67：" + isValidIP("abc.123.45.67")); // false（非数字）
    }
}
